home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc / OpenDoc Development / Debugging Support / OpenDoc™ Source Code / Messaging / OSL / OSLClbak.c < prev    next >
Encoding:
Text File  |  1996-08-28  |  4.6 KB  |  119 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        OSLClbak.c
  3.  
  4.     Contains:    
  5.  
  6.     Owned by:    Eric House and Dan Clifford
  7.  
  8.     Copyright:    © 1992 - 1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <3>     8/29/95    jpa        DescPtr --> AEDesc* for Univ Hdrs 2.1.
  13.                                     [1279173]
  14.          <2>     7/21/95    eeh        1214396: stop compiler warnings in OSL
  15.          <1>     5/2/94    eeh            bug #1160654: first checked in
  16.  
  17.     To Do:
  18. */
  19. ////////////////////////////////////////////////////////////////////////////////
  20. // Copyright © 1992 Apple Computer, Inc. All rights reserved.
  21. // Author: Eric House
  22. ////////////////////////////////////////////////////////////////////////////////
  23.  
  24. #ifndef _OSLPRIV_
  25. #include "OSLPriv.h"
  26. #endif
  27.  
  28. typedef pascal OSErr (*compareProcType)( DescType oper, AEDesc obj1 ,
  29.     AEDesc obj2, Boolean *result ) ;
  30. typedef pascal OSErr (*countProcProcType)( DescType desiredType,
  31.         DescType containerClass, AEDesc container, long *result ) ;
  32. typedef pascal OSErr (*adjustMarksProcProcType)( long newStart, long newStop,
  33.         AEDesc *markToken ) ;
  34. typedef pascal OSErr (*markProcProcType)( AEDesc dToken, AEDesc  markToken,
  35.         long n ) ;
  36. typedef pascal OSErr (*getMarkTokenProcProcType)( AEDesc dContainerToken,
  37.         DescType containerClass, AEDesc *result ) ;
  38. typedef pascal OSErr (*getErrDescProcProcType)( AEDesc* *appDescPtr ) ;
  39.  
  40.  
  41. #define __SEP__ ,
  42.  
  43. #define MAKECALLPROC( procName, procType, fieldName, formals, paramvars, params )    \
  44. OSErr                                                                                \
  45. procName formals                                                                     \
  46. {                                                                                    \
  47.     procType proc ;                                                                    \
  48.     OSErr err = errAEEventNotHandled ;                                                \
  49.     GlobalRecHandle glob ;                                                            \
  50.                                                                                     \
  51.     if ( (glob = (GlobalRecHandle)GetGlobalRef()) != NULL )                            \
  52.     {                                                                                \
  53.         if ( (proc = (procType)(*glob)->fieldName) != NULL )                        \
  54.             err = (OSErr)CallUniversalProc((UniversalProcPtr)proc, paramvars, params);                \
  55.     }                                                                                \
  56.     if ( (err == errAEEventNotHandled)                                                 \
  57.             && ((glob = (GlobalRecHandle)GetSysGlobal()) != NULL) )                    \
  58.     {                                                                                \
  59.         if ( (proc = (procType)(*glob)->compareProcPtr) != NULL )                    \
  60.             err = (OSErr)CallUniversalProc((UniversalProcPtr)proc, paramvars, params);                \
  61.     }                                                                                \
  62.     return err ;                                                                    \
  63. }                                                                                    \
  64.  
  65. MAKECALLPROC( CallCompareProc, compareProcType, compareProcPtr,
  66.         ( DescType oper, AEDesc obj1, AEDesc obj2, Boolean *result ),    
  67.         (kPascalStackBased |                                            
  68.         RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) |                            
  69.         STACK_ROUTINE_PARAMETER(1, kFourByteCode) |                        
  70.         STACK_ROUTINE_PARAMETER(2, kFourByteCode) |                        
  71.         STACK_ROUTINE_PARAMETER(3, kFourByteCode) |                        
  72.         STACK_ROUTINE_PARAMETER(4, kFourByteCode)),
  73.         oper __SEP__ &obj1 __SEP__ &obj2 __SEP__ result )
  74.  
  75. MAKECALLPROC( CallCountProc, countProcProcType, countProcPtr,
  76.         ( DescType desiredType, DescType containerClass,
  77.                 AEDesc container, long *result ), 
  78.         (kPascalStackBased |                                            
  79.         RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) |                            
  80.         STACK_ROUTINE_PARAMETER(1, kFourByteCode) |                        
  81.         STACK_ROUTINE_PARAMETER(2, kFourByteCode) |                        
  82.         STACK_ROUTINE_PARAMETER(3, kFourByteCode) |                        
  83.         STACK_ROUTINE_PARAMETER(4, kFourByteCode)),
  84.         desiredType __SEP__ containerClass __SEP__ &container __SEP__ result  )
  85.  
  86. MAKECALLPROC( CallAdjustMarks, adjustMarksProcProcType, AdjustMarksProcPtr,
  87.         (long newStart, long newStop, AEDesc markToken),
  88.         (kPascalStackBased |                                            
  89.         RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) |                            
  90.         STACK_ROUTINE_PARAMETER(1, kFourByteCode) |                        
  91.         STACK_ROUTINE_PARAMETER(2, kFourByteCode) |                        
  92.         STACK_ROUTINE_PARAMETER(3, kFourByteCode)),
  93.         newStart __SEP__ newStop __SEP__ &markToken )
  94.  
  95. MAKECALLPROC( CallMark, markProcProcType, MarkProcPtr,
  96.         ( AEDesc dToken, AEDesc  markToken, long n ), 
  97.         (kPascalStackBased |                                            
  98.         RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) |                            
  99.         STACK_ROUTINE_PARAMETER(1, kFourByteCode) |                        
  100.         STACK_ROUTINE_PARAMETER(2, kFourByteCode) |                        
  101.         STACK_ROUTINE_PARAMETER(3, kFourByteCode)),
  102.         &dToken __SEP__ &markToken __SEP__ n )
  103.  
  104. MAKECALLPROC( CallGetMarkToken, getMarkTokenProcProcType, getMarkIDProcPtr,
  105.         ( AEDesc dContainerToken, DescType containerClass, AEDesc *result ),
  106.         (kPascalStackBased |                                            
  107.         RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) |                            
  108.         STACK_ROUTINE_PARAMETER(1, kFourByteCode) |                        
  109.         STACK_ROUTINE_PARAMETER(2, kFourByteCode) |                        
  110.         STACK_ROUTINE_PARAMETER(3, kFourByteCode)),
  111.         &dContainerToken __SEP__ containerClass __SEP__ result )
  112.  
  113. MAKECALLPROC( CallGetErrDesc, getErrDescProcProcType, TypeAsIndexProc,
  114.         ( AEDesc* *appDescPtr ),
  115.         (kPascalStackBased |                                            
  116.         RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) |                            
  117.         STACK_ROUTINE_PARAMETER(1, kFourByteCode)),
  118.         appDescPtr )
  119.